gdk: Add settings api to GdkDisplay
authorMatthias Clasen <mclasen@redhat.com>
Mon, 30 Oct 2017 13:00:49 +0000 (09:00 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 30 Oct 2017 13:21:47 +0000 (09:21 -0400)
This commit adds gdk_display_get_setting and a ::setting-changed
signal, which will replace the settings event we use now. Note
that I've done away with the GdkSettingAction argument that the
event has, since we are not using it at all.

gdk/gdkdisplay.c
gdk/gdkdisplay.h
gdk/gdkdisplayprivate.h

index 5e75773dae3d046fe19bd13d1c30226a7068c9f4..f8989c623de467e953e4efdb530e20a777417f5f 100644 (file)
@@ -84,6 +84,7 @@ enum {
   SEAT_REMOVED,
   MONITOR_ADDED,
   MONITOR_REMOVED,
+  SETTING_CHANGED,
   LAST_SIGNAL
 };
 
@@ -341,6 +342,14 @@ gdk_display_class_init (GdkDisplayClass *class)
                  0, NULL, NULL,
                   g_cclosure_marshal_VOID__OBJECT,
                  G_TYPE_NONE, 1, GDK_TYPE_MONITOR);
+
+  signals[SETTING_CHANGED] =
+    g_signal_new (g_intern_static_string ("setting-changed"),
+                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_SIGNAL_RUN_LAST,
+                 0, NULL, NULL,
+                  NULL,
+                 G_TYPE_NONE, 1, G_TYPE_STRING | G_SIGNAL_TYPE_STATIC_SCOPE);
 }
 
 static void
@@ -2223,3 +2232,18 @@ gdk_display_emit_opened (GdkDisplay *display)
 {
   g_signal_emit (display, signals[OPENED], 0);
 }
+
+gboolean
+gdk_display_get_setting (GdkDisplay *display,
+                         const char *name,
+                         GValue     *value)
+{
+  return gdk_screen_get_setting (gdk_display_get_default_screen (display), name, value);
+}
+
+void
+gdk_display_setting_changed (GdkDisplay       *display,
+                             const char       *name)
+{
+  g_signal_emit (display, signals[SETTING_CHANGED], 0, name);
+}
index d099ab4487575f8de1f6c49b4ec948e7598e477b..d9168481a52f00727d88de15c5740e4bb3d3edc7 100644 (file)
@@ -154,6 +154,12 @@ GDK_AVAILABLE_IN_3_22
 GdkMonitor * gdk_display_get_monitor_at_window (GdkDisplay *display,
                                                 GdkWindow  *window);
 
+GDK_AVAILABLE_IN_3_94
+gboolean     gdk_display_get_setting (GdkDisplay *display,
+                                      const char *name,
+                                      GValue     *value);
+
+
 
 G_END_DECLS
 
index cd3ef346d13ae551efd0c5c046d311aa4b314dfd..16969e4cf1028f7376cbfa05d3374927fa1e21a4 100644 (file)
@@ -225,8 +225,8 @@ struct _GdkDisplayClass
 
   /* Signals */
   void                   (*opened)                     (GdkDisplay     *display);
-  void (*closed) (GdkDisplay *display,
-                  gboolean    is_error);
+  void                   (*closed)                     (GdkDisplay     *display,
+                                                        gboolean        is_error);
 };
 
 
@@ -303,6 +303,9 @@ void                gdk_display_monitor_removed       (GdkDisplay       *display
                                                        GdkMonitor       *monitor);
 void                gdk_display_emit_opened           (GdkDisplay       *display);
 
+void                gdk_display_setting_changed       (GdkDisplay       *display,
+                                                       const char       *name);
+
 G_END_DECLS
 
 #endif  /* __GDK_DISPLAY_PRIVATE_H__ */